\hypertarget{class_simulation_manager}{
\section{SimulationManager Class Reference}
\label{class_simulation_manager}\index{SimulationManager@{SimulationManager}}
}


the main simulation class that creates all other objects of the simulation, it also is the main opengl context and allows drawing functionalities  




{\ttfamily \#include $<$SimulationManager.h$>$}



Collaboration diagram for SimulationManager:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=600pt]{class_simulation_manager__coll__graph}
\end{center}
\end{figure}
\subsection*{Public Slots}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{class_simulation_manager_a0a06543f7de16794918b1ae0e8685065}{updateCameraZoom} (const int \_\-depth)
\begin{DoxyCompactList}\small\item\em called when the camera zoom slider value is changed in the GUI; it slides the camera along its N vector \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{class_simulation_manager_abcb6a3e347e6187cc527cadc1b150013}{SimulationManager} (QWidget $\ast$\_\-parent)
\begin{DoxyCompactList}\small\item\em ctor \end{DoxyCompactList}\item 
\hyperlink{class_simulation_manager_a7e7d91e87e35cb25fb13f5e439257488}{$\sim$SimulationManager} ()
\begin{DoxyCompactList}\small\item\em dtor \end{DoxyCompactList}\item 
void \hyperlink{class_simulation_manager_a7a7ee2eca21aa160916815df50f212bd}{keyPress} (QKeyEvent $\ast$\_\-event)
\begin{DoxyCompactList}\small\item\em handle keypress events \end{DoxyCompactList}\item 
\hyperlink{class_cloth}{Cloth} $\ast$ \hyperlink{class_simulation_manager_a7816dada872ef6bd8057f465356f71cf}{getCloth} () const 
\begin{DoxyCompactList}\small\item\em returns the cloth object of the simulation \end{DoxyCompactList}\item 
\hyperlink{class_obstacle_manager}{ObstacleManager} $\ast$ \hyperlink{class_simulation_manager_a6b729e027e775b9c205e9b4c20797674}{getObstacleManager} () const 
\begin{DoxyCompactList}\small\item\em returns the obstacle manager object \end{DoxyCompactList}\item 
void \hyperlink{class_simulation_manager_a4dd9055eaf59141181bc3413f4d4fb7f}{setup2DTopView} ()
\begin{DoxyCompactList}\small\item\em this method is used to setup the 2D top view \end{DoxyCompactList}\item 
void \hyperlink{class_simulation_manager_a547082b335a426f867ac1af3427520fc}{setup2DFrontView} ()
\begin{DoxyCompactList}\small\item\em this method is used to setup the 2D front view \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{class_simulation_manager_a5c217e8b25f1e5c07076d7a6a6a6f6d3}{initializeGL} ()
\begin{DoxyCompactList}\small\item\em called when the window context is created \end{DoxyCompactList}\item 
void \hyperlink{class_simulation_manager_a780fb6c148f4c2a4d68bbfdd45260a02}{resizeGL} (const int \_\-w, const int \_\-h)
\begin{DoxyCompactList}\small\item\em called whenever the window is re-\/sized \end{DoxyCompactList}\item 
void \hyperlink{class_simulation_manager_add8275adfe5005a008d216c4f1c65378}{paintGL} ()
\begin{DoxyCompactList}\small\item\em main gl drawing method that is called whenever the window needs to be re-\/drawn \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{class_simulation_manager_abb6567400e24cccec8b8e422a91f4ea7}{timerEvent} (QTimerEvent $\ast$\_\-event)
\begin{DoxyCompactList}\small\item\em the timer event triggered from the timers \end{DoxyCompactList}\item 
void \hyperlink{class_simulation_manager_afeaed507ac0dd89f7463a8c081b97e06}{createCamera} ()
\begin{DoxyCompactList}\small\item\em this method create our camera \end{DoxyCompactList}\item 
void \hyperlink{class_simulation_manager_a3724d0f7d3495dc432b02138e3df90ba}{createLight} ()
\begin{DoxyCompactList}\small\item\em this method create our light \end{DoxyCompactList}\item 
void \hyperlink{class_simulation_manager_a7dd6baee9178b3677fabcda2d563ccf4}{displayHelp} ()
\begin{DoxyCompactList}\small\item\em this method display the text help overlay on the screen \end{DoxyCompactList}\item 
void \hyperlink{class_simulation_manager_ad81f3069914be9f660683a5e35c5d175}{mouseMoveEvent} (QMouseEvent $\ast$\_\-event)
\begin{DoxyCompactList}\small\item\em this method is called every time a mouse is moved \end{DoxyCompactList}\item 
void \hyperlink{class_simulation_manager_ae20f6c7096ee1e096d32898f6ba676d0}{mousePressEvent} (QMouseEvent $\ast$\_\-event)
\begin{DoxyCompactList}\small\item\em this method is called everytime the mouse button is pressed \end{DoxyCompactList}\item 
void \hyperlink{class_simulation_manager_af819db1056f687c8d7eb7743b9b7df5f}{mouseReleaseEvent} (QMouseEvent $\ast$\_\-event)
\begin{DoxyCompactList}\small\item\em this method is called everytime the mouse button is released \end{DoxyCompactList}\item 
void \hyperlink{class_simulation_manager_a5418e95db08487ff7b557b5693d41638}{initialiseSimulation} ()
\begin{DoxyCompactList}\small\item\em this method is called to initialise all the objects/params of the simulation \end{DoxyCompactList}\item 
void \hyperlink{class_simulation_manager_a8256ec54bae6bd1d66d782bc0fcfca42}{deleteSimulationObjects} ()
\begin{DoxyCompactList}\small\item\em this method is called to delete all the objects/managers of the world \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
int \hyperlink{class_simulation_manager_a10cb4c69aaa81326611ac42801e7de47}{m\_\-spinXFace}
\begin{DoxyCompactList}\small\item\em the x rotation mouse value \end{DoxyCompactList}\item 
int \hyperlink{class_simulation_manager_a60b82ab43753160db6b49ce5ba47b8d8}{m\_\-spinYFace}
\begin{DoxyCompactList}\small\item\em the y rotation mouse value \end{DoxyCompactList}\item 
bool \hyperlink{class_simulation_manager_a41d19a4fe64d7caf32fd286588fd5f81}{m\_\-rotate}
\begin{DoxyCompactList}\small\item\em flag to indicate if the mouse button is pressed when dragging \end{DoxyCompactList}\item 
int \hyperlink{class_simulation_manager_ab5d68b1756b9b53661f275d79b606f72}{m\_\-origX}
\begin{DoxyCompactList}\small\item\em the previous x mouse value \end{DoxyCompactList}\item 
int \hyperlink{class_simulation_manager_a545788ab29c9f40c1b7a1c2d0e870de1}{m\_\-origY}
\begin{DoxyCompactList}\small\item\em the previous y mouse value \end{DoxyCompactList}\item 
int \hyperlink{class_simulation_manager_ac6ab323a82fa490218ac7ac3f44658f1}{m\_\-moveX}
\begin{DoxyCompactList}\small\item\em right mouse camera movement x value \end{DoxyCompactList}\item 
int \hyperlink{class_simulation_manager_accccb5c9ae7d1a1e0062cd2c75f0060a}{m\_\-moveY}
\begin{DoxyCompactList}\small\item\em right mouse camera movement y value \end{DoxyCompactList}\item 
bool \hyperlink{class_simulation_manager_a11c6adc98c7188ba7bfa5cfc9c57b7cb}{m\_\-move}
\begin{DoxyCompactList}\small\item\em flag to indicate if the right mouse is pressed for (x,y) mouse movement \end{DoxyCompactList}\item 
int \hyperlink{class_simulation_manager_a0a7fadbf1d84c549bde2974b390309a7}{m\_\-origMoveX}
\begin{DoxyCompactList}\small\item\em starting x position of the right mouse \end{DoxyCompactList}\item 
int \hyperlink{class_simulation_manager_a3168c4d40e3f12768dd8c52db683f449}{m\_\-origMoveY}
\begin{DoxyCompactList}\small\item\em starting y position of the right mouse \end{DoxyCompactList}\item 
bool \hyperlink{class_simulation_manager_a59503a50b8e0acccbefc1f68857e8f8d}{m\_\-drawHelp}
\begin{DoxyCompactList}\small\item\em toggle help flag \end{DoxyCompactList}\item 
float \hyperlink{class_simulation_manager_a5ec51dbb5ba908005bcf54c7849a1be1}{m\_\-aspect}
\begin{DoxyCompactList}\small\item\em aspect ratio of the camera \end{DoxyCompactList}\item 
int \hyperlink{class_simulation_manager_a43b2893907efb54db245a6a477958a84}{m\_\-mouseMoveSensitivity}
\begin{DoxyCompactList}\small\item\em mouse move sensitivity \end{DoxyCompactList}\item 
int \hyperlink{class_simulation_manager_a99a8353a5f12682bc53b34c755c1942a}{m\_\-frameRate}
\begin{DoxyCompactList}\small\item\em frame update rate \end{DoxyCompactList}\item 
ngl::TransformStack \hyperlink{class_simulation_manager_a546f45aee9d5e2e551f80d97b9fc2743}{m\_\-transformStack}
\begin{DoxyCompactList}\small\item\em global transform stack \end{DoxyCompactList}\item 
ngl::Light \hyperlink{class_simulation_manager_a2794d551fd9e616828bea6a80ebb5bb6}{m\_\-light}
\begin{DoxyCompactList}\small\item\em ngl light object \end{DoxyCompactList}\item 
ngl::Camera \hyperlink{class_simulation_manager_a6778b8e6fdfbd44bf2ab2fec3a969511}{m\_\-camera}
\begin{DoxyCompactList}\small\item\em ngl camera object \end{DoxyCompactList}\item 
\hyperlink{class_shader_manager}{ShaderManager} $\ast$ \hyperlink{class_simulation_manager_ae3bfea7b7ee64b4550de2da198dc20ff}{m\_\-shaderManager}
\begin{DoxyCompactList}\small\item\em shader manager \end{DoxyCompactList}\item 
\hyperlink{class_obstacle_manager}{ObstacleManager} $\ast$ \hyperlink{class_simulation_manager_af8b02af1f660aee6d19176d9e4017a73}{m\_\-obstacleManager}
\begin{DoxyCompactList}\small\item\em obstacle manager \end{DoxyCompactList}\item 
\hyperlink{class_cloth}{Cloth} $\ast$ \hyperlink{class_simulation_manager_a3be30714272599c0dee3b7308879a14f}{m\_\-cloth}
\begin{DoxyCompactList}\small\item\em cloth manager \end{DoxyCompactList}\item 
int \hyperlink{class_simulation_manager_a9693f5cfabf89a91075a9f6aa05b56d0}{m\_\-timer}
\begin{DoxyCompactList}\small\item\em main timer \end{DoxyCompactList}\item 
float \hyperlink{class_simulation_manager_ab948d5954426c5d1f6c2e0f5cd7fcfb8}{m\_\-lastCamZ}
\begin{DoxyCompactList}\small\item\em the last depth of a camera zoom operation \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
the main simulation class that creates all other objects of the simulation, it also is the main opengl context and allows drawing functionalities 

Definition at line 30 of file SimulationManager.h.



\subsection{Constructor \& Destructor Documentation}
\hypertarget{class_simulation_manager_abcb6a3e347e6187cc527cadc1b150013}{
\index{SimulationManager@{SimulationManager}!SimulationManager@{SimulationManager}}
\index{SimulationManager@{SimulationManager}!SimulationManager@{SimulationManager}}
\subsubsection[{SimulationManager}]{\setlength{\rightskip}{0pt plus 5cm}SimulationManager::SimulationManager (
\begin{DoxyParamCaption}
\item[{QWidget $\ast$}]{\_\-parent}
\end{DoxyParamCaption}
)}}
\label{class_simulation_manager_abcb6a3e347e6187cc527cadc1b150013}


ctor 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em \_\-parent} & the parent window to create the GL context in \\
\hline
\end{DoxyParams}


Definition at line 21 of file SimulationManager.cpp.


\begin{DoxyCode}
                  :
                QGLWidget(_parent)
{
    // set this widget to have the initial keyboard focus
    setFocusPolicy(Qt::StrongFocus);
    setFocus();

    //initialise simulation
    initialiseSimulation();
}
\end{DoxyCode}
\hypertarget{class_simulation_manager_a7e7d91e87e35cb25fb13f5e439257488}{
\index{SimulationManager@{SimulationManager}!$\sim$SimulationManager@{$\sim$SimulationManager}}
\index{$\sim$SimulationManager@{$\sim$SimulationManager}!SimulationManager@{SimulationManager}}
\subsubsection[{$\sim$SimulationManager}]{\setlength{\rightskip}{0pt plus 5cm}SimulationManager::$\sim$SimulationManager (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{class_simulation_manager_a7e7d91e87e35cb25fb13f5e439257488}


dtor 



Definition at line 87 of file SimulationManager.cpp.



References deleteSimulationObjects().


\begin{DoxyCode}
{
    //clean up ngl
    std::cout << "\nNGL Cleanup" << std::endl;

    ngl::NGLInit* Init = ngl::NGLInit::instance();
    Init->NGLQuit();
    std::cout << "NGL shut down safely\n" << std::endl;

    //delete all current managers
    deleteSimulationObjects();
}
\end{DoxyCode}


Here is the call graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_a7e7d91e87e35cb25fb13f5e439257488_cgraph}
\end{center}
\end{figure}




\subsection{Member Function Documentation}
\hypertarget{class_simulation_manager_afeaed507ac0dd89f7463a8c081b97e06}{
\index{SimulationManager@{SimulationManager}!createCamera@{createCamera}}
\index{createCamera@{createCamera}!SimulationManager@{SimulationManager}}
\subsubsection[{createCamera}]{\setlength{\rightskip}{0pt plus 5cm}void SimulationManager::createCamera (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_afeaed507ac0dd89f7463a8c081b97e06}


this method create our camera 



Definition at line 304 of file SimulationManager.cpp.



References Configuration::initialiseCamera(), m\_\-aspect, and m\_\-camera.


\begin{DoxyCode}
{
    //create camera from config parameters
    m_camera = Configuration::initialiseCamera(m_aspect);
}
\end{DoxyCode}


Here is the call graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_afeaed507ac0dd89f7463a8c081b97e06_cgraph}
\end{center}
\end{figure}




Here is the caller graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_afeaed507ac0dd89f7463a8c081b97e06_icgraph}
\end{center}
\end{figure}


\hypertarget{class_simulation_manager_a3724d0f7d3495dc432b02138e3df90ba}{
\index{SimulationManager@{SimulationManager}!createLight@{createLight}}
\index{createLight@{createLight}!SimulationManager@{SimulationManager}}
\subsubsection[{createLight}]{\setlength{\rightskip}{0pt plus 5cm}void SimulationManager::createLight (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a3724d0f7d3495dc432b02138e3df90ba}


this method create our light 



Definition at line 310 of file SimulationManager.cpp.



References Configuration::initialiseLight(), and m\_\-light.


\begin{DoxyCode}
{
    //set a material
    ngl::Material m(ngl::PEWTER); m.use();
    m.setSpecular(ngl::Colour(1,1,1));
    m.setSpecularExponent(0.2);;

    //create our light from config and enable it
    m_light = Configuration::initialiseLight(); m_light.enable();
}
\end{DoxyCode}


Here is the call graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_a3724d0f7d3495dc432b02138e3df90ba_cgraph}
\end{center}
\end{figure}




Here is the caller graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_a3724d0f7d3495dc432b02138e3df90ba_icgraph}
\end{center}
\end{figure}


\hypertarget{class_simulation_manager_a8256ec54bae6bd1d66d782bc0fcfca42}{
\index{SimulationManager@{SimulationManager}!deleteSimulationObjects@{deleteSimulationObjects}}
\index{deleteSimulationObjects@{deleteSimulationObjects}!SimulationManager@{SimulationManager}}
\subsubsection[{deleteSimulationObjects}]{\setlength{\rightskip}{0pt plus 5cm}void SimulationManager::deleteSimulationObjects (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a8256ec54bae6bd1d66d782bc0fcfca42}


this method is called to delete all the objects/managers of the world 



Definition at line 76 of file SimulationManager.cpp.



References m\_\-cloth, m\_\-obstacleManager, m\_\-shaderManager, and m\_\-timer.


\begin{DoxyCode}
{
    //kill timer
    killTimer(m_timer);

    //delete all the current objects associated with the simulation
    delete m_obstacleManager;
    delete m_shaderManager;
    delete m_cloth;
}
\end{DoxyCode}


Here is the caller graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_a8256ec54bae6bd1d66d782bc0fcfca42_icgraph}
\end{center}
\end{figure}


\hypertarget{class_simulation_manager_a7dd6baee9178b3677fabcda2d563ccf4}{
\index{SimulationManager@{SimulationManager}!displayHelp@{displayHelp}}
\index{displayHelp@{displayHelp}!SimulationManager@{SimulationManager}}
\subsubsection[{displayHelp}]{\setlength{\rightskip}{0pt plus 5cm}void SimulationManager::displayHelp (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a7dd6baee9178b3677fabcda2d563ccf4}


this method display the text help overlay on the screen 



Definition at line 189 of file SimulationManager.cpp.



References m\_\-drawHelp.


\begin{DoxyCode}
{
    //display help menu
    if (m_drawHelp == true)
    {
        // first we need to fallback to the fixed functionality GL pipeline
        glUseProgram(0);

        //create font
        QFont font;
        font.setBold(false);
        font.setPointSize(12);
        glColor3f(1,1,0);

        //display debug and stats info
        QString text;
   }

}
\end{DoxyCode}


Here is the caller graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_a7dd6baee9178b3677fabcda2d563ccf4_icgraph}
\end{center}
\end{figure}


\hypertarget{class_simulation_manager_a7816dada872ef6bd8057f465356f71cf}{
\index{SimulationManager@{SimulationManager}!getCloth@{getCloth}}
\index{getCloth@{getCloth}!SimulationManager@{SimulationManager}}
\subsubsection[{getCloth}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Cloth}$\ast$ SimulationManager::getCloth (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{class_simulation_manager_a7816dada872ef6bd8057f465356f71cf}


returns the cloth object of the simulation 



Definition at line 49 of file SimulationManager.h.



References m\_\-cloth.


\begin{DoxyCode}
{ return  m_cloth; }
\end{DoxyCode}


Here is the caller graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=600pt]{class_simulation_manager_a7816dada872ef6bd8057f465356f71cf_icgraph}
\end{center}
\end{figure}


\hypertarget{class_simulation_manager_a6b729e027e775b9c205e9b4c20797674}{
\index{SimulationManager@{SimulationManager}!getObstacleManager@{getObstacleManager}}
\index{getObstacleManager@{getObstacleManager}!SimulationManager@{SimulationManager}}
\subsubsection[{getObstacleManager}]{\setlength{\rightskip}{0pt plus 5cm}{\bf ObstacleManager}$\ast$ SimulationManager::getObstacleManager (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{class_simulation_manager_a6b729e027e775b9c205e9b4c20797674}


returns the obstacle manager object 



Definition at line 52 of file SimulationManager.h.



References m\_\-obstacleManager.


\begin{DoxyCode}
{ return  m_obstacleManager; }
\end{DoxyCode}


Here is the caller graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_a6b729e027e775b9c205e9b4c20797674_icgraph}
\end{center}
\end{figure}


\hypertarget{class_simulation_manager_a5418e95db08487ff7b557b5693d41638}{
\index{SimulationManager@{SimulationManager}!initialiseSimulation@{initialiseSimulation}}
\index{initialiseSimulation@{initialiseSimulation}!SimulationManager@{SimulationManager}}
\subsubsection[{initialiseSimulation}]{\setlength{\rightskip}{0pt plus 5cm}void SimulationManager::initialiseSimulation (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a5418e95db08487ff7b557b5693d41638}


this method is called to initialise all the objects/params of the simulation 



Definition at line 34 of file SimulationManager.cpp.



References createCamera(), createLight(), Configuration::initialiseWindow(), m\_\-camera, m\_\-cloth, m\_\-drawHelp, m\_\-frameRate, m\_\-lastCamZ, m\_\-mouseMoveSensitivity, m\_\-move, m\_\-moveX, m\_\-moveY, m\_\-obstacleManager, m\_\-rotate, m\_\-shaderManager, m\_\-spinXFace, m\_\-spinYFace, and m\_\-timer.


\begin{DoxyCode}
{
    //initialise all the objects

    //initialise mouse rotation values
    m_rotate=false;
    m_spinXFace=0;
    m_spinYFace=0;

    //initialise mouse movement values
    m_move=false;
    m_moveX=0;
    m_moveY=0;

    //init framerate and mouse move sensitivity
    Configuration::initialiseWindow(m_frameRate, m_mouseMoveSensitivity);

    //create camera
    createCamera();

    //create light
    createLight();

    //initialise our shader manager to \0null
    m_shaderManager = 0;

    //create the obstacle manager
    m_obstacleManager = new ObstacleManager();

    //create the cloth
    m_cloth = new Cloth(20, 20, 20, 20, 0.01);

    //start main loop
    m_timer = startTimer(m_frameRate);

    //hide help by default
    m_drawHelp = false;

    //initial camera z value
    m_lastCamZ = m_camera.getEye().m_z;
}
\end{DoxyCode}


Here is the call graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_a5418e95db08487ff7b557b5693d41638_cgraph}
\end{center}
\end{figure}


\hypertarget{class_simulation_manager_a5c217e8b25f1e5c07076d7a6a6a6f6d3}{
\index{SimulationManager@{SimulationManager}!initializeGL@{initializeGL}}
\index{initializeGL@{initializeGL}!SimulationManager@{SimulationManager}}
\subsubsection[{initializeGL}]{\setlength{\rightskip}{0pt plus 5cm}void SimulationManager::initializeGL (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected\mbox{]}}}}
\label{class_simulation_manager_a5c217e8b25f1e5c07076d7a6a6a6f6d3}


called when the window context is created 



Definition at line 100 of file SimulationManager.cpp.



References Cloth::loadGeometry(), ObstacleManager::loadGeometry(), m\_\-camera, m\_\-cloth, m\_\-obstacleManager, m\_\-shaderManager, and ShaderManager::updateViewProjection().


\begin{DoxyCode}
{
    //init glew
    ngl::NGLInit* Init = ngl::NGLInit::instance();
    Init->initGlew();

    // enable depth testing for drawing
    glEnable(GL_DEPTH_TEST);

    //initialise shaders
    m_shaderManager = new ShaderManager();
    m_shaderManager->updateViewProjection(&m_camera);

    //initialise obstacle manager geometry
    m_obstacleManager->loadGeometry();

    //initialise cloth drawing
    m_cloth->loadGeometry();

    //create vbo for plane grid
    ngl::VBOPrimitives *prim=ngl::VBOPrimitives::instance();
    prim->createVBOQuadPlane("plane",20,20,20,20,ngl::Vector(0,1,0));
    prim->createVBOSphere("obstacleSphereTest", 12, 30);
}
\end{DoxyCode}


Here is the call graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_a5c217e8b25f1e5c07076d7a6a6a6f6d3_cgraph}
\end{center}
\end{figure}


\hypertarget{class_simulation_manager_a7a7ee2eca21aa160916815df50f212bd}{
\index{SimulationManager@{SimulationManager}!keyPress@{keyPress}}
\index{keyPress@{keyPress}!SimulationManager@{SimulationManager}}
\subsubsection[{keyPress}]{\setlength{\rightskip}{0pt plus 5cm}void SimulationManager::keyPress (
\begin{DoxyParamCaption}
\item[{QKeyEvent $\ast$}]{\_\-event}
\end{DoxyParamCaption}
)}}
\label{class_simulation_manager_a7a7ee2eca21aa160916815df50f212bd}


handle keypress events 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em \_\-event} & the Qt Event structure, holding information about keypresses \\
\hline
\end{DoxyParams}


Definition at line 222 of file SimulationManager.cpp.



References m\_\-cloth, m\_\-obstacleManager, Cloth::toggleEnableAutoCloth(), and Cloth::updateParticles().


\begin{DoxyCode}
{
    switch (_event->key())
    {
        //debug info
//        case Qt::Key_D : { m_drawHelp ^=true; break; }

        //single step cloth update
        case Qt::Key_W : { m_cloth->updateParticles(m_obstacleManager); break; }

        //toggle timer to move cloth
        case Qt::Key_Q : { m_cloth->toggleEnableAutoCloth(); break; }

        default : break;
    }

    // re-draw GL
    updateGL();
}
\end{DoxyCode}


Here is the call graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_a7a7ee2eca21aa160916815df50f212bd_cgraph}
\end{center}
\end{figure}




Here is the caller graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=390pt]{class_simulation_manager_a7a7ee2eca21aa160916815df50f212bd_icgraph}
\end{center}
\end{figure}


\hypertarget{class_simulation_manager_ad81f3069914be9f660683a5e35c5d175}{
\index{SimulationManager@{SimulationManager}!mouseMoveEvent@{mouseMoveEvent}}
\index{mouseMoveEvent@{mouseMoveEvent}!SimulationManager@{SimulationManager}}
\subsubsection[{mouseMoveEvent}]{\setlength{\rightskip}{0pt plus 5cm}void SimulationManager::mouseMoveEvent (
\begin{DoxyParamCaption}
\item[{QMouseEvent $\ast$}]{\_\-event}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_ad81f3069914be9f660683a5e35c5d175}


this method is called every time a mouse is moved 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em \_\-event} & the Qt Event structure \\
\hline
\end{DoxyParams}


Definition at line 242 of file SimulationManager.cpp.



References m\_\-camera, m\_\-mouseMoveSensitivity, m\_\-move, m\_\-moveX, m\_\-moveY, m\_\-origMoveX, m\_\-origMoveY, m\_\-origX, m\_\-origY, m\_\-rotate, m\_\-shaderManager, m\_\-spinXFace, m\_\-spinYFace, and ShaderManager::updateViewProjection().


\begin{DoxyCode}
{
    //as the left mouse is still pressed and it moves, we get the x and y spin va
      lue
    if(m_rotate && _event->buttons() == Qt::LeftButton)
    {
        m_spinYFace = ( m_spinYFace + (_event->x() - m_origX) ) % 360 ;
        m_spinXFace = ( m_spinXFace + (_event->y() - m_origY) ) % 360 ;
        m_origX = _event->x();
        m_origY = _event->y();

        // re-draw GL
        updateGL();
    }

    //move camera in the (x,y) plane
    if(m_move && _event->buttons() == Qt::RightButton)
    {
        m_moveX = _event->x() - m_origMoveX;
        m_moveY = _event->y() - m_origMoveY;
        m_origMoveX = _event->x();
        m_origMoveY = _event->y();

        //move camera eye n look by (dx, dy)
        m_camera.move(m_moveX / m_mouseMoveSensitivity, m_moveY / 
      m_mouseMoveSensitivity, 0);

        //update view projection matrices of camera
        m_shaderManager->updateViewProjection(&m_camera);

        // re-draw GL
        updateGL();
    }
}
\end{DoxyCode}


Here is the call graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_ad81f3069914be9f660683a5e35c5d175_cgraph}
\end{center}
\end{figure}


\hypertarget{class_simulation_manager_ae20f6c7096ee1e096d32898f6ba676d0}{
\index{SimulationManager@{SimulationManager}!mousePressEvent@{mousePressEvent}}
\index{mousePressEvent@{mousePressEvent}!SimulationManager@{SimulationManager}}
\subsubsection[{mousePressEvent}]{\setlength{\rightskip}{0pt plus 5cm}void SimulationManager::mousePressEvent (
\begin{DoxyParamCaption}
\item[{QMouseEvent $\ast$}]{\_\-event}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_ae20f6c7096ee1e096d32898f6ba676d0}


this method is called everytime the mouse button is pressed 


\begin{DoxyParams}{Parameters}
{\em \_\-event} & the Qt Event structure \\
\hline
\end{DoxyParams}


Definition at line 275 of file SimulationManager.cpp.



References m\_\-move, m\_\-origMoveX, m\_\-origMoveY, m\_\-origX, m\_\-origY, and m\_\-rotate.


\begin{DoxyCode}
{
    // store the value where the mouse was clicked (x,y) and set the Rotate flag 
      to true
    if(_event->button() == Qt::LeftButton)
    {
        m_origX = _event->x();
        m_origY = _event->y();
        m_rotate =true;
    }

    //keep track of origin of x,y movement
    if(_event->button() == Qt::RightButton)
    {
        m_origMoveX = _event->x();
        m_origMoveY = _event->y();
        m_move =true;
    }
}
\end{DoxyCode}
\hypertarget{class_simulation_manager_af819db1056f687c8d7eb7743b9b7df5f}{
\index{SimulationManager@{SimulationManager}!mouseReleaseEvent@{mouseReleaseEvent}}
\index{mouseReleaseEvent@{mouseReleaseEvent}!SimulationManager@{SimulationManager}}
\subsubsection[{mouseReleaseEvent}]{\setlength{\rightskip}{0pt plus 5cm}void SimulationManager::mouseReleaseEvent (
\begin{DoxyParamCaption}
\item[{QMouseEvent $\ast$}]{\_\-event}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_af819db1056f687c8d7eb7743b9b7df5f}


this method is called everytime the mouse button is released 


\begin{DoxyParams}{Parameters}
{\em \_\-event} & the Qt Event structure \\
\hline
\end{DoxyParams}


Definition at line 294 of file SimulationManager.cpp.



References m\_\-move, and m\_\-rotate.


\begin{DoxyCode}
{
    //when the mouse button is released, we set Rotate to false
    if (_event->button() == Qt::LeftButton) m_rotate=false;

    //disable camera movement when right button is released
    if (_event->button() == Qt::RightButton) m_move=false;

}
\end{DoxyCode}
\hypertarget{class_simulation_manager_add8275adfe5005a008d216c4f1c65378}{
\index{SimulationManager@{SimulationManager}!paintGL@{paintGL}}
\index{paintGL@{paintGL}!SimulationManager@{SimulationManager}}
\subsubsection[{paintGL}]{\setlength{\rightskip}{0pt plus 5cm}void SimulationManager::paintGL (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected\mbox{]}}}}
\label{class_simulation_manager_add8275adfe5005a008d216c4f1c65378}


main gl drawing method that is called whenever the window needs to be re-\/drawn 



Definition at line 144 of file SimulationManager.cpp.



References displayHelp(), ObstacleManager::draw(), Cloth::draw(), m\_\-cloth, m\_\-obstacleManager, m\_\-shaderManager, m\_\-spinXFace, m\_\-spinYFace, m\_\-transformStack, and ShaderManager::updateModelColor().


\begin{DoxyCode}
{
    // clear the screen and depth buffer
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glClearColor(0.4, 0.4, 0.4, 1);

    //update tx stack with global mouse movements
    ngl::Transformation trans;
    trans.setRotation(m_spinXFace, m_spinYFace, 0);
    m_transformStack.setGlobal(trans);

    //display cloth
    m_cloth->draw(m_transformStack, m_shaderManager, "Colour", "Texture");

    //display obstacles
    m_obstacleManager->draw(m_transformStack, m_shaderManager, "Light");

    //draw grid and reference origin
    ngl::VBOPrimitives *prim=ngl::VBOPrimitives::instance();

    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

    m_transformStack.pushTransform();
    {
        m_transformStack.getCurrentTransform().setPosition(0, -0.5, 0);
        m_shaderManager->updateModelColor("Colour", m_transformStack.getCurrAndGl
      obal().getMatrix(), ngl::Colour(1, 1, 1));
        prim->draw("plane");
    }
    m_transformStack.popTransform();
    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);


    m_transformStack.pushTransform();
    {
        m_transformStack.getCurrentTransform().setPosition(0, 5, 0);

        m_shaderManager->updateModelColor("Colour", m_transformStack.getCurrAndGl
      obal().getMatrix(), ngl::Colour(1, 1, 0));
        prim->draw("cube");
    }
    m_transformStack.popTransform();

    //display stats menu
    displayHelp();
}
\end{DoxyCode}


Here is the call graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_add8275adfe5005a008d216c4f1c65378_cgraph}
\end{center}
\end{figure}


\hypertarget{class_simulation_manager_a780fb6c148f4c2a4d68bbfdd45260a02}{
\index{SimulationManager@{SimulationManager}!resizeGL@{resizeGL}}
\index{resizeGL@{resizeGL}!SimulationManager@{SimulationManager}}
\subsubsection[{resizeGL}]{\setlength{\rightskip}{0pt plus 5cm}void SimulationManager::resizeGL (
\begin{DoxyParamCaption}
\item[{const int}]{\_\-w, }
\item[{const int}]{\_\-h}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected\mbox{]}}}}
\label{class_simulation_manager_a780fb6c148f4c2a4d68bbfdd45260a02}


called whenever the window is re-\/sized 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em \_\-w} & the width of the resized window \\
\hline
\mbox{\tt in}  & {\em \_\-h} & the height of the resized window \\
\hline
\end{DoxyParams}


Definition at line 126 of file SimulationManager.cpp.


\begin{DoxyCode}
{
    //set the viewport
    glViewport(0, 0, _w, _h);

    //calculate the aspect ratio
    m_aspect = (float)_w / _h;

    //update camera aspect
    m_camera.setAspect(m_aspect);

    //update shaders ProjectionMatrix
    m_shaderManager->updateProjection(&m_camera);
}
\end{DoxyCode}
\hypertarget{class_simulation_manager_a547082b335a426f867ac1af3427520fc}{
\index{SimulationManager@{SimulationManager}!setup2DFrontView@{setup2DFrontView}}
\index{setup2DFrontView@{setup2DFrontView}!SimulationManager@{SimulationManager}}
\subsubsection[{setup2DFrontView}]{\setlength{\rightskip}{0pt plus 5cm}void SimulationManager::setup2DFrontView (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{class_simulation_manager_a547082b335a426f867ac1af3427520fc}


this method is used to setup the 2D front view 



Definition at line 352 of file SimulationManager.cpp.



References m\_\-spinXFace, and m\_\-spinYFace.


\begin{DoxyCode}
{
    //2d front view enabled -> rotate our view to give a front view
    m_spinXFace=0;
    m_spinYFace=0;

    updateGL();
}
\end{DoxyCode}


Here is the caller graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_a547082b335a426f867ac1af3427520fc_icgraph}
\end{center}
\end{figure}


\hypertarget{class_simulation_manager_a4dd9055eaf59141181bc3413f4d4fb7f}{
\index{SimulationManager@{SimulationManager}!setup2DTopView@{setup2DTopView}}
\index{setup2DTopView@{setup2DTopView}!SimulationManager@{SimulationManager}}
\subsubsection[{setup2DTopView}]{\setlength{\rightskip}{0pt plus 5cm}void SimulationManager::setup2DTopView (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{class_simulation_manager_a4dd9055eaf59141181bc3413f4d4fb7f}


this method is used to setup the 2D top view 



Definition at line 343 of file SimulationManager.cpp.



References m\_\-spinXFace, and m\_\-spinYFace.


\begin{DoxyCode}
{
    //2d top view enabled -> rotate our view to give a top view
    m_spinXFace=-90;
    m_spinYFace=0;

    updateGL();
}
\end{DoxyCode}


Here is the caller graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_a4dd9055eaf59141181bc3413f4d4fb7f_icgraph}
\end{center}
\end{figure}


\hypertarget{class_simulation_manager_abb6567400e24cccec8b8e422a91f4ea7}{
\index{SimulationManager@{SimulationManager}!timerEvent@{timerEvent}}
\index{timerEvent@{timerEvent}!SimulationManager@{SimulationManager}}
\subsubsection[{timerEvent}]{\setlength{\rightskip}{0pt plus 5cm}void SimulationManager::timerEvent (
\begin{DoxyParamCaption}
\item[{QTimerEvent $\ast$}]{\_\-event}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_abb6567400e24cccec8b8e422a91f4ea7}


the timer event triggered from the timers 



Definition at line 209 of file SimulationManager.cpp.



References Cloth::getEnableAutoCloth(), m\_\-cloth, m\_\-obstacleManager, and Cloth::updateParticles().


\begin{DoxyCode}
{
    //update cloth if cloth's auto move is enabled
    if (m_cloth->getEnableAutoCloth())
    {
        //update cloth particles
        m_cloth->updateParticles(m_obstacleManager);

        //refresh display
        updateGL();
    }
}
\end{DoxyCode}


Here is the call graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_abb6567400e24cccec8b8e422a91f4ea7_cgraph}
\end{center}
\end{figure}


\hypertarget{class_simulation_manager_a0a06543f7de16794918b1ae0e8685065}{
\index{SimulationManager@{SimulationManager}!updateCameraZoom@{updateCameraZoom}}
\index{updateCameraZoom@{updateCameraZoom}!SimulationManager@{SimulationManager}}
\subsubsection[{updateCameraZoom}]{\setlength{\rightskip}{0pt plus 5cm}void SimulationManager::updateCameraZoom (
\begin{DoxyParamCaption}
\item[{const int}]{\_\-depth}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}slot\mbox{]}}}}
\label{class_simulation_manager_a0a06543f7de16794918b1ae0e8685065}


called when the camera zoom slider value is changed in the GUI; it slides the camera along its N vector 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em \_\-depth} & the zoom factor to set to the camera \\
\hline
\end{DoxyParams}


Definition at line 321 of file SimulationManager.cpp.



References m\_\-camera, m\_\-lastCamZ, m\_\-shaderManager, and ShaderManager::updateViewProjection().


\begin{DoxyCode}
{
    //calculate the relative change in Z value
    float newZ = (float)(-depth);
    float changeInZ = newZ - m_lastCamZ;

    //calculate the small change in N that corresponds to the change in Z
    float dn = changeInZ / m_camera.getN().m_z;

    //slide the camera along the N vector by the change in N
    m_camera.slide(0, 0, dn);

    //save the new Z value
    m_lastCamZ = m_camera.getEye().m_z;

    //update view projection matrices of camera
    if ((m_shaderManager != NULL) && (m_shaderManager != 0)) m_shaderManager->
      updateViewProjection(&m_camera);

    //refresh display
    updateGL();
}
\end{DoxyCode}


Here is the call graph for this function:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{class_simulation_manager_a0a06543f7de16794918b1ae0e8685065_cgraph}
\end{center}
\end{figure}




\subsection{Member Data Documentation}
\hypertarget{class_simulation_manager_a5ec51dbb5ba908005bcf54c7849a1be1}{
\index{SimulationManager@{SimulationManager}!m\_\-aspect@{m\_\-aspect}}
\index{m\_\-aspect@{m\_\-aspect}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-aspect}]{\setlength{\rightskip}{0pt plus 5cm}float {\bf SimulationManager::m\_\-aspect}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a5ec51dbb5ba908005bcf54c7849a1be1}


aspect ratio of the camera 



Definition at line 119 of file SimulationManager.h.

\hypertarget{class_simulation_manager_a6778b8e6fdfbd44bf2ab2fec3a969511}{
\index{SimulationManager@{SimulationManager}!m\_\-camera@{m\_\-camera}}
\index{m\_\-camera@{m\_\-camera}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-camera}]{\setlength{\rightskip}{0pt plus 5cm}ngl::Camera {\bf SimulationManager::m\_\-camera}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a6778b8e6fdfbd44bf2ab2fec3a969511}


ngl camera object 



Definition at line 134 of file SimulationManager.h.

\hypertarget{class_simulation_manager_a3be30714272599c0dee3b7308879a14f}{
\index{SimulationManager@{SimulationManager}!m\_\-cloth@{m\_\-cloth}}
\index{m\_\-cloth@{m\_\-cloth}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-cloth}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Cloth}$\ast$ {\bf SimulationManager::m\_\-cloth}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a3be30714272599c0dee3b7308879a14f}


cloth manager 



Definition at line 143 of file SimulationManager.h.

\hypertarget{class_simulation_manager_a59503a50b8e0acccbefc1f68857e8f8d}{
\index{SimulationManager@{SimulationManager}!m\_\-drawHelp@{m\_\-drawHelp}}
\index{m\_\-drawHelp@{m\_\-drawHelp}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-drawHelp}]{\setlength{\rightskip}{0pt plus 5cm}bool {\bf SimulationManager::m\_\-drawHelp}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a59503a50b8e0acccbefc1f68857e8f8d}


toggle help flag 



Definition at line 116 of file SimulationManager.h.

\hypertarget{class_simulation_manager_a99a8353a5f12682bc53b34c755c1942a}{
\index{SimulationManager@{SimulationManager}!m\_\-frameRate@{m\_\-frameRate}}
\index{m\_\-frameRate@{m\_\-frameRate}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-frameRate}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf SimulationManager::m\_\-frameRate}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a99a8353a5f12682bc53b34c755c1942a}


frame update rate 



Definition at line 125 of file SimulationManager.h.

\hypertarget{class_simulation_manager_ab948d5954426c5d1f6c2e0f5cd7fcfb8}{
\index{SimulationManager@{SimulationManager}!m\_\-lastCamZ@{m\_\-lastCamZ}}
\index{m\_\-lastCamZ@{m\_\-lastCamZ}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-lastCamZ}]{\setlength{\rightskip}{0pt plus 5cm}float {\bf SimulationManager::m\_\-lastCamZ}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_ab948d5954426c5d1f6c2e0f5cd7fcfb8}


the last depth of a camera zoom operation 



Definition at line 149 of file SimulationManager.h.

\hypertarget{class_simulation_manager_a2794d551fd9e616828bea6a80ebb5bb6}{
\index{SimulationManager@{SimulationManager}!m\_\-light@{m\_\-light}}
\index{m\_\-light@{m\_\-light}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-light}]{\setlength{\rightskip}{0pt plus 5cm}ngl::Light {\bf SimulationManager::m\_\-light}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a2794d551fd9e616828bea6a80ebb5bb6}


ngl light object 



Definition at line 131 of file SimulationManager.h.

\hypertarget{class_simulation_manager_a43b2893907efb54db245a6a477958a84}{
\index{SimulationManager@{SimulationManager}!m\_\-mouseMoveSensitivity@{m\_\-mouseMoveSensitivity}}
\index{m\_\-mouseMoveSensitivity@{m\_\-mouseMoveSensitivity}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-mouseMoveSensitivity}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf SimulationManager::m\_\-mouseMoveSensitivity}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a43b2893907efb54db245a6a477958a84}


mouse move sensitivity 



Definition at line 122 of file SimulationManager.h.

\hypertarget{class_simulation_manager_a11c6adc98c7188ba7bfa5cfc9c57b7cb}{
\index{SimulationManager@{SimulationManager}!m\_\-move@{m\_\-move}}
\index{m\_\-move@{m\_\-move}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-move}]{\setlength{\rightskip}{0pt plus 5cm}bool {\bf SimulationManager::m\_\-move}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a11c6adc98c7188ba7bfa5cfc9c57b7cb}


flag to indicate if the right mouse is pressed for (x,y) mouse movement 



Definition at line 107 of file SimulationManager.h.

\hypertarget{class_simulation_manager_ac6ab323a82fa490218ac7ac3f44658f1}{
\index{SimulationManager@{SimulationManager}!m\_\-moveX@{m\_\-moveX}}
\index{m\_\-moveX@{m\_\-moveX}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-moveX}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf SimulationManager::m\_\-moveX}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_ac6ab323a82fa490218ac7ac3f44658f1}


right mouse camera movement x value 



Definition at line 101 of file SimulationManager.h.

\hypertarget{class_simulation_manager_accccb5c9ae7d1a1e0062cd2c75f0060a}{
\index{SimulationManager@{SimulationManager}!m\_\-moveY@{m\_\-moveY}}
\index{m\_\-moveY@{m\_\-moveY}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-moveY}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf SimulationManager::m\_\-moveY}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_accccb5c9ae7d1a1e0062cd2c75f0060a}


right mouse camera movement y value 



Definition at line 104 of file SimulationManager.h.

\hypertarget{class_simulation_manager_af8b02af1f660aee6d19176d9e4017a73}{
\index{SimulationManager@{SimulationManager}!m\_\-obstacleManager@{m\_\-obstacleManager}}
\index{m\_\-obstacleManager@{m\_\-obstacleManager}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-obstacleManager}]{\setlength{\rightskip}{0pt plus 5cm}{\bf ObstacleManager}$\ast$ {\bf SimulationManager::m\_\-obstacleManager}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_af8b02af1f660aee6d19176d9e4017a73}


obstacle manager 



Definition at line 140 of file SimulationManager.h.

\hypertarget{class_simulation_manager_a0a7fadbf1d84c549bde2974b390309a7}{
\index{SimulationManager@{SimulationManager}!m\_\-origMoveX@{m\_\-origMoveX}}
\index{m\_\-origMoveX@{m\_\-origMoveX}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-origMoveX}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf SimulationManager::m\_\-origMoveX}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a0a7fadbf1d84c549bde2974b390309a7}


starting x position of the right mouse 



Definition at line 110 of file SimulationManager.h.

\hypertarget{class_simulation_manager_a3168c4d40e3f12768dd8c52db683f449}{
\index{SimulationManager@{SimulationManager}!m\_\-origMoveY@{m\_\-origMoveY}}
\index{m\_\-origMoveY@{m\_\-origMoveY}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-origMoveY}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf SimulationManager::m\_\-origMoveY}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a3168c4d40e3f12768dd8c52db683f449}


starting y position of the right mouse 



Definition at line 113 of file SimulationManager.h.

\hypertarget{class_simulation_manager_ab5d68b1756b9b53661f275d79b606f72}{
\index{SimulationManager@{SimulationManager}!m\_\-origX@{m\_\-origX}}
\index{m\_\-origX@{m\_\-origX}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-origX}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf SimulationManager::m\_\-origX}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_ab5d68b1756b9b53661f275d79b606f72}


the previous x mouse value 



Definition at line 95 of file SimulationManager.h.

\hypertarget{class_simulation_manager_a545788ab29c9f40c1b7a1c2d0e870de1}{
\index{SimulationManager@{SimulationManager}!m\_\-origY@{m\_\-origY}}
\index{m\_\-origY@{m\_\-origY}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-origY}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf SimulationManager::m\_\-origY}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a545788ab29c9f40c1b7a1c2d0e870de1}


the previous y mouse value 



Definition at line 98 of file SimulationManager.h.

\hypertarget{class_simulation_manager_a41d19a4fe64d7caf32fd286588fd5f81}{
\index{SimulationManager@{SimulationManager}!m\_\-rotate@{m\_\-rotate}}
\index{m\_\-rotate@{m\_\-rotate}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-rotate}]{\setlength{\rightskip}{0pt plus 5cm}bool {\bf SimulationManager::m\_\-rotate}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a41d19a4fe64d7caf32fd286588fd5f81}


flag to indicate if the mouse button is pressed when dragging 



Definition at line 92 of file SimulationManager.h.

\hypertarget{class_simulation_manager_ae3bfea7b7ee64b4550de2da198dc20ff}{
\index{SimulationManager@{SimulationManager}!m\_\-shaderManager@{m\_\-shaderManager}}
\index{m\_\-shaderManager@{m\_\-shaderManager}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-shaderManager}]{\setlength{\rightskip}{0pt plus 5cm}{\bf ShaderManager}$\ast$ {\bf SimulationManager::m\_\-shaderManager}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_ae3bfea7b7ee64b4550de2da198dc20ff}


shader manager 



Definition at line 137 of file SimulationManager.h.

\hypertarget{class_simulation_manager_a10cb4c69aaa81326611ac42801e7de47}{
\index{SimulationManager@{SimulationManager}!m\_\-spinXFace@{m\_\-spinXFace}}
\index{m\_\-spinXFace@{m\_\-spinXFace}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-spinXFace}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf SimulationManager::m\_\-spinXFace}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a10cb4c69aaa81326611ac42801e7de47}


the x rotation mouse value 



Definition at line 86 of file SimulationManager.h.

\hypertarget{class_simulation_manager_a60b82ab43753160db6b49ce5ba47b8d8}{
\index{SimulationManager@{SimulationManager}!m\_\-spinYFace@{m\_\-spinYFace}}
\index{m\_\-spinYFace@{m\_\-spinYFace}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-spinYFace}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf SimulationManager::m\_\-spinYFace}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a60b82ab43753160db6b49ce5ba47b8d8}


the y rotation mouse value 



Definition at line 89 of file SimulationManager.h.

\hypertarget{class_simulation_manager_a9693f5cfabf89a91075a9f6aa05b56d0}{
\index{SimulationManager@{SimulationManager}!m\_\-timer@{m\_\-timer}}
\index{m\_\-timer@{m\_\-timer}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-timer}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf SimulationManager::m\_\-timer}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a9693f5cfabf89a91075a9f6aa05b56d0}


main timer 



Definition at line 146 of file SimulationManager.h.

\hypertarget{class_simulation_manager_a546f45aee9d5e2e551f80d97b9fc2743}{
\index{SimulationManager@{SimulationManager}!m\_\-transformStack@{m\_\-transformStack}}
\index{m\_\-transformStack@{m\_\-transformStack}!SimulationManager@{SimulationManager}}
\subsubsection[{m\_\-transformStack}]{\setlength{\rightskip}{0pt plus 5cm}ngl::TransformStack {\bf SimulationManager::m\_\-transformStack}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{class_simulation_manager_a546f45aee9d5e2e551f80d97b9fc2743}


global transform stack 



Definition at line 128 of file SimulationManager.h.



The documentation for this class was generated from the following files:\begin{DoxyCompactItemize}
\item 
include/\hyperlink{_simulation_manager_8h}{SimulationManager.h}\item 
src/\hyperlink{_simulation_manager_8cpp}{SimulationManager.cpp}\end{DoxyCompactItemize}
